package server;

import java.io.*;
import java.util.*;
import java.net.Socket;

public class AtendeLeitor implements Runnable {

    private Socket s;
    private String path;
    private String mensagem;
    public String msg;
    private String owner;
    private String destinatario;
    private int cont = 0;
    private ArrayList<Lista> lista;

    AtendeLeitor(Socket server, ArrayList<Lista> l) {
        this.s = server;
        this.lista = l;
    }

    public void run() {
        try {

            DataInputStream in = new DataInputStream(s.getInputStream());
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            String msg = "";

            boolean pronto = false;
            while (!pronto) {

                //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
                String mensagem = in.readUTF();

                try {
                    if (mensagem.contains("ME:")) {
                        String[] partes = mensagem.split(":");
                        owner = partes[2];

                        if (!lista.isEmpty()){
                        Iterator<Lista> it = lista.iterator();
                        while (it.hasNext()){
                            if (it.next().nomeLista().contains(owner)){
                                if (it.next().Insere(s)){
                                    System.out.println(owner);
                                }
                            }
                        }
                        }
                    }

                    if (!lista.isEmpty()){
                            Iterator<Lista> it = lista.iterator();
                            while (it.hasNext()) {
                                Lista l = it.next();
                                if (l.nomeLista().contains(destinatario)){
                                    msg = l.getMensagem();
                                    out.writeUTF("NUMARQ:1");
                                    out.writeUTF(mensagem);
                                }
                            }
                        } else {
                        out.writeUTF("NUMARQ:0");
                        }
                    

                    if (mensagem.contains("#bye")) {
                        pronto = true;
                        out.writeUTF("OK");
                        in.close();
                        out.close();
                    }

                } catch (Exception e) {
                    System.out.println(e.toString());
                }

            }
            
        } catch (Exception e) {
            System.out.println("Erro na thread 2" + e.toString());
        }
    }
}